package chapter05

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test03_FunPara
 * Package: chapter05
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-06-19
 *          Time: 14:56
 */

object Test03_FunPara {
  //函数参数
  def main(args: Array[String]): Unit = {

    //可变参数 有多个的话加一个*号
    def f1(str:String*):Unit = {
      println(str)
    }
    //证明这里的String 不是一个简单的String类型 而是一个集合类型 包装起来的数组
    f1("alic") //WrappedArray(alic)
    f1("aaa","bbb","ccc") //WrappedArray(aaa, bbb, ccc)

    //2.如果参数列表中存在多个参数，那么可变参数一般放置在最后
    def f2(str1:String,str2:String*):Unit = {
      println(str1,str2)
    }
    //也可以是为空的
    f2("alice") //(alice,WrappedArray())
    f2("hello","123","456") //(hello,WrappedArray(123, 456))

    //3.参数的默认值 一般有默认值的参数放在最后 直接等号赋值
    def f3(str:String = "harden"):Unit = {
      println(str)
    }
    f3() //不传值就是指定的默认值
    f3("威少") //传值 就是 传的值

    //4.带名参数
    def f4(name:String,age:Int):Unit = {
      println(s"${age}岁的${name}在学习Scala")
    }
    f4("alice",20)
    //打乱顺序 参数名=赋值 多用于在默认值的情况下
    f4(age = 20,name = "bob")


    }
}
